START
세상에 없던 자산관리 플랫폼
TEAM BTEAM B FINAL PROJECT
CONTENTS
01 기획 의도
02 주요 기능
03 팀원 소개
05 적용 기술
04 개발 일정
06 기능정의서
07 다이어그램
08 화면 코드
2023-02-17 3
01 기획 의도
TARGET
MZ 세대
밀레니얼 + Z 세대로 1981~2010년생을 말한다
밀레니얼 세대는 1981~96년생으로 컴퓨터와 인터넷을 하면서 자란 세대이다
Z세대는 1997~2010년생으로 태어나면서부터 스마트폰에 익숙한 디지털 세대이다
2023-02-17 4
TARGET
자본주의 키즈
시장의 이윤 논리를 정확히 이해하는 자본주의 키즈들은 투자에 매우 적극적이
카페에 앉아서 영화 이야기를 하던 커플이 부동산 투자 강의를 함께 듣고, 대학
, 군인 등도 투자 대열에 합류한다.
01 기획 의도
2023-02-17 5
01 기획 의도
CONCEPT
커뮤니티형 자산관리 서비스
자본주의 키즈인 MZ세대의 감성에 맞는 컨셉으로 셀프 재무관리를 돕는 플랫폼.
주식에 관심많은 이들의 시장 정보 기업의 재무 정보를 제공하고, 모으는 습관을 기르도록
자산 인사이트를 제공하며 커뮤니티를 통해 소통하는 서비스
2023-02-17 6
02 팀원 소개
김나영 장우석위유랑
OUR TEAM
김미림
팀장 팀원 팀원 팀원
서비스 기획 일정관리 자산 설계 주식 종가 예측 모듈 관리자 페이지
기업 자산 데이터 자산 데이터 시각화 주식데이터 크롤링 시각화 블로그 AOP
스프링, 디장고 세팅 댓글 MBTI검사 기반 자산 지표설정 주식데이터 시각화
개발환경 설정 시장별 주식리스트 경제용어 사전 회원데이터 시각화
2023-02-17 7
02 팀원 소개
OUR TEAM
허태준
하태근정주은
팀원 팀원 팀원
회원 블로그 자산 데이터 연동 로그 AOP
경제지표 전문가 블로그 데이터 주식데이터 시각화
주식 포트폴리오 추천 블로그 게시판 주식 머신러닝
형상관리 디버깅 회의록 정리 주식데이터 크롤링 전처리
프로젝트 협업 과정
DISCUSSION
비대면 회의
대면 회의
회의록
트렐로
구글 드라이브
WORK SHARING
회의는 대면과 비대면(ZOOM, Discord)으로 진행.
회의 이후 회의록 작성을 통해 의견 피드백이 이루어졌으며,
모든 일정 관리 작업 관리는 트렐로와 구글 드라이브에 등록
아카이빙
archaive
형상관리 사용법, 데이터 베이스 환경설정 단위에서 공통적으로 알아
하는 방법들이 공유되었고, 혹은 개별 단위의 모듈 개발이 이루어지면
카이브에 등록하여 다른 팀원들이 참고할 있도록 관리
일자, 범례, 포지션, 할일로 구분하여 프로젝트 수행 작업을
간트차트를 기반으로 커스텀
일정 관리
일자
범례
포지
TODO 인풋 내용 아웃풋 배정
7/23 1
프론
블로그 UI 사용자 완성 null template/sub 구축된 블로그 UI 템플릿을 실제 서비스할
블로그 레이아웃으로 변경 blog.jsp
장우석
,
김미
2
프론
댓글 UI 연동 1완성된 블로그형 UI 댓글기능 연동 blog_comment.jsp 김미림
3 게시판 기능 완성 null 게시판 백엔드 기본 완성
Board_Controller.java
하태근
,
정주
4
프론
FAQ / contact us null template/default 구축된 메인 UI 템플릿을 실제 서비스할
FAQ, contact us 레이아웃으로 변경
FAQ.jsp
Contact us.jsp 김나영
5
AWS
주식팀 디장고 분석 자료
모두
올리기 null
드라이브
(HOW TO) 업로드된 aws_mysql DB 생성 / conda 가상환경 생성 /
주피터
노트북 디장고 연동기반으로
conda
가상환경 (flow), mysql db(flowDB) / 계정주소(flow79/kosmo7979)
일해서
이동
chart.jsp(SPRING)
허태준
7/24 1
설계
블로그 메인 차트 레이아웃 정하기 null 블로그 메인 레이아웃으로 띄울 내용 (주식, 자산) 목업 만들기 블로그 메인.docx
자산팀
,
주식
2
프론
게시판 UI 완성 1게시판 백엔드 UI 연결 Board.jsp
장우석
,
하태
3
설계
카테고리 트리차트 제작 null 웹페이지 사이트맵의 기반이 되는 구조 문서화하기 sitemap.docx
김나영
,
위유
4
프론
메인페이지 한글화 작업 null default/ 템플릿 메인 페이지 한글화 index.jsp 위유랑
5 카테고리 breadcrumb 제작 3링크를 타고 들어갈 만들어지는 breadcrumb 제작 breadcrumb.java 위유랑
tasks
일정 관리
성취
시작 진행일
7.24
7.25
7.26
7.28
7.29
7.30
8.1
8.2
8.3
8.4
8.5
8.6
8.7
8.8
8.9
8.10
8.12
8.13
8.14
8.16
8.17
8.18
7/23 3
우석
,
미림
7/23
7/23 5
태근,
태근,
주은
태근,
주은
7/23
나영
7/23
태준
7/24
전체
전체
전체
7/24 4
우석
,
태근
우석
,
태근
,
7/24
유랑
7/24
유랑
7/24
주은
주은
7/24
미림,
나영
미림,
나영
미림,
나영
일자, 범례, 포지션, 할일로 구분하여 프로젝트 수행 작업을
간트차트를 기반으로 커스텀
scheduler
형상관리
Configuration Management
형상관리 협업 툴로 윈도우와 리눅스 환경 Git 설치 사용.
윈도우의 경우 SourceTree GUI 사용
모든 팀원이 로컬과 원격 작업공간에서 Pull, Push 수행
보유기술 개발환경 사용도구
언어/개발
JAVA / Eclipse OS Windows 10, Linux
개발도구
Eclipse, Visual Studio, Maven,
Sqldeveloper
Python, SQL Service Apache Tomcat, AWS
JavaScript, JSP, HTML5,
CSS3, JQuery(Ajax) Framework Spring, MyBatis, Tiles 형상 관리 Git
설계 Visual Paradigm, eXERD,
Balsamiq mockups, draw.io
데이터베이스
Oracle 11g, SQLite3, MySQL 기타
한글, Excel, Trello Kanban Board
사용 기술
스프링 디장고 연동 데이터 정제가 필요한 경우 디장고에서 적재,
시각화, 머신러닝 수행 스프링과 Ajax 통신으로 데이터 주고 받음.
스프링 디장고 연동 정리
DATA transaction
json.dumps()
ajax
BeautifulSoup
Selenium
Pykrx
yfinance
jsoup크롤링 크롤링
API
데이터 정제 필요한 경우
데이터 정제 필요하지 않는
경우
외부 로컬 외부 로컬
1234
적재/시각화/머신러닝
UseCase 다이어그램
회원
관리자
1. 투자자산
2. 총부채부담지표
3. 카테고리별 지출
4, 가계수지상태지
5. 순자산
6. 월별 유입 지출
7. 이번달 지출
8. 부채
자산
블로그
1. 퀀트 차트
2. 관심 종목
3. 보유 주식
4. 보유 주식 현황
5. 수익률 계산
6. 추천 주식 포트
폴리오
7. 3년간 주식
트폴리오 수익
주식
블로그
1. 게시판
2. 팔로우
3. 추천게시글
4. 팔로우 게시글
블로그
1. 경제 용어 사전
2. 자산관리 테스
FLOW
서비스
1. FAQ
2. Contact Us
고객
센터
1. 시장 정보
2. 섹터별 보기
3. 시장별 보기
4. 랜덤 주식
주식
1. 관심종목
2. 계좌 연동하
마이
FLOW
1. 메인 페이지(종합
)
2. 회원 분포
3. 회원 관리
관리자
로그인
회원 서비스
회원가
로그인
마이페이지
비회원 서비
유저 서비스
관리자 서비스
유저 서비스는 크게 회원 서비스, 비회원 서비스로 나뉘고 비회원
서비스로 주식 시장정보 제공, 회원 대표 서비스로 블로그, 계좌
연동 기능이 있음. 관리자 페이지에서 기본적인 종합 통계 회원
관리 제공.
클래스 다이어그램
model
service
Controller
스프링 클래스는 모델, 서비스, 컨트롤러 단의 3
layered architecture 구성하여 유지보수 편의성을
높임
E-R 다이어그램
자산 관련 테이블로 계좌, 현금흐름표, 자산 테이블이 있음.
account 연동 > cashflow 생성 > 사용자의 asset 현황 업데
이트
asset
E-R 다이어그램
블로그 관련 테이블. blog, board, boardcomment,
boardlike, follower, notification 있음.
log(로그), voca(경제용어사전) 테이블 별도
blog
E-R 다이어그램
주식 관련 테이블. stock_like(관심주식), stock_mine(보유주
), company(기업)
stock
seq Field 영문명 Field 한글명 Data Type
Size
NN Key
1
A_NUM
번호
(PK)
NUMBER
30
YPK
2
A_ID
아이디
(FK)
VARCHAR2
50
YFK
3
A_CASH
현금성자산
NUMBER
30
4
A_INVESTMENT
S
투자
(금융)자산
NUMBER
30
5
A_PROPERTY
사용자산
NUMBER
30
6
A_ETC
기타
NUMBER
30
7
A_LOAN
장기대출
NUMBER
30
8
A_CREDIT
단기대출
(신용)
NUMBER
30
테이블 명세서 : 자산
ASSET
seq Field 영문명 Field 한글명 Data Type
Size
NN Key
1
m_num
회원번호
number
100
YPK
2
m_id
아이디
varchar2
100
YUQ
3
m_nickname
닉네임
VARCHAR2
30
YUQ
4
m_pwd
비밀번호
VARCHAR2
100
Y
5
m_name
이름
VARCHAR2
100
Y
6
m_division
구분번호
number
10
N
7
m_jumin
주민등록번호
number
50
N
8
m_tel
휴대폰번호
varchar2
50
N
9
m_date
가입날짜
date
50
N
10
m_profile
프로필사진
varchar2
200
N
11
m_mbti
성향분석
varchar2
30
N
member
seq
Field 영문명
Field 한글명 Data Type
Size
NN Key
1
C_NUM
번호
(PK)
NUMBER
20
YPK
2
M_ID
아이디
(FK)
VARCHAR2
50
NFK
3
C_FLOW
유입
/유출(현금흐
)
VARCHAR2
10
Y
4
C_CATEGO
RY
카테고리
VARCHAR2
50
N
5
C_CONTEN
T
거래내용
VARCHAR2
50
N
6
C_METHOD
거래수단
VARCHAR2
50
N
7
C_PRICE
금액
NUMBER
Y
8
C_DATE
날짜
DATE
N
cashflow
seq Field 영문명 Field 한글명 Data Type
Size
NN Key
1
ACC_NUM
계좌번호
(PK)
VARCHAR
2
30
YPK
2
M_ID
계좌종류
VARCHAR
2
50
N
3
ACC_BANK
아이디
VARCHAR
2
30
YFK
account
member 비롯해 자산과 연관된 asset, cashflow, account 테이블
세서
ACC_NUM M_ID ACC_BANK
1 eyoung94 shinhan
2 eyoung94 IBK
테이블 명세서 : 자산
M_NU
M
M_ID M_NICKNAME M_PWD M_NAME M_DIVISION M_JUMIN M_TEL M_DATE M_PROFILE M_MBTI
1 admin 관리자 !234* 김수정 0781205-1 010-5547-2451 21/06/28 default_image.jpg NULL
3 eyoung94 영영 !1234 이영아 1940213-2 010-5214-6523 21/08/01 2ffec639fbd84507b9e3aa899f7d5e18_dhjin.jpg INFP
2 wndms1045 주식의달인 *%11 정주은 9910409-1 010-8833-1046 21/07/17 d0bd030f0aed4cf6ba8dd4d46669a4c8_DSC09525.jpg NULL
member
account
A_NUM M_ID A_CASH A_INVESTMENT A_PROPERTY A_ETC A_LOAN A_CREDIT
1 eyoung94 67364968 40700000 1100000000 01100000000 11000000
ASSET
C_NUM M_ID C_FLOW C_CATEGORY C_CONTENT C_METHOD C_PRICE C_DATE
000880 한화 화학 기타 화학제품 제조
KOSPI 화학, 화공품 76/06/24 21/06/22
cashflow
0: 관리자 / 1:회원 / 9:탈퇴회원
(블로그 더미데이터 보존을
on delete cacade 미적용)
seq Field 영문명 Field 한글명 Data Type
Size
NN
Key
1
B_NUM
게시글
번호(
PK
)
NUMBER
30
YPK
2
BL_NUM
블로그
번호
(FK)
NUMBER
30
YFK
3
B_SUBJECT
제목
VARCHAR2
500
4
B_CONTENT
내용
VARCHAR2
4000
5
B_CATEGORY
카테고리
VARCHAR2
30
6
B_REGDATE
게시글
등록일
DATE
테이블 명세서 : 블로그
board
seq Field 영문명 Field 한글명 Data Type
Size
NN Key
1
bl_num
블로그
번호
number
30
YPK
2
m_id
아이디
varchar2
50
YUQ
3
bl_subject
블로그
제목
VARCHAR2
50
YUQ
4
bl_regdate
블로그
생성일
VARCHAR2
N
5
bl_intro
블로그
소개
VARCHAR2
300
N
blog
seq
Field 영문명
Field 한글명 Data Type
Size
NN Key
1
BC_NUM
댓글
번호(PK)
NUMBER
30
YPK
2
B_NUM
게시글
번호
(FK)
NUMBER
30
YFK
3
M_NICKNAM
E
닉네임
VARCHAR
2
50
Y
4
BC_CONTE
NT
내용
VARCHAR
2
50
N
5
BC_REGDA
TE
댓글
등록일
DATE
board_comment
seq Field 영문명 Field 한글명 Data Type
Size
NN Key
1
FOL_NUM
팔로우
번호
NUMBER
30
YPK
2
FOLLOW
팔로우
회원
VARCHAR
2
50
YFK
3
FOLLOWER
팔로워
회원
VARCHAR
2
30
YFK
follower
seq Field 영문명 Field 한글명 Data Type
Size
NN Key
1
B_NUM
게시글
번호
NUMBER
30
NFK
2
M_ID
아이디
VARCHAR
2
50
NFK
board_like
블로그와 연관된 blog, board, board_comment, board_like, follower
테이블 명세서
BC_NUM B_NUM M_NICKNAME BC_CONTENT BC_REGDATE
1 2 영영 유익하네요!21/08/21
2 2 주식왕 공유 감사합니
21/08/28
테이블 명세서 : 블로그
B_NUM BL_NUM B_SUBJECT B_CONTENT B_CATEGORY B_FILENAME B_REGDATE
1 1 게시글입니다.만나서 반갑습니다. 직장인 재테크로 소통해요 기본 카테고리 hello.jpg 21/08/21
2 1 교보 제약 바이오 탐방노트 월간 자료에 향후 한달 간의 국내외 바이오
동향과…
주식 카테고리 stock1.jpg 21/08/22
BOard
board comment
BL_NUM M_ID BL_SUBJECT BL_REGDATE BL_INTRO
1 eyoung94 내가 자산을 관리하는 이야
21/08/01 작은 것도 쌓이면 도움이 된다
Blog
BOard_like
B_NUM LIKEUSER
1 eyoung94
1 wndms1045
FOL_NUM FOLLOW FOLLOWER
1 eyoung94 wndms1045
follower
테이블 명세서 : 주식
seq Field 영문명 Field 한글명 Data Type
Size
NN Key
1
C_CODE
종목코드
VARCHAR2
20
YPK
2
C_NAME
기업명
VARCHAR2
50
Y
3
C_CATEGORY
업종
(분류)
VARCHAR2
20
4
C_TYPE
업종
(상세)
VARCHAR2
100
5
C_MARKET
상장시장
VARCHAR2
20
6
C_PRODUCT
생산물품
VARCHAR2
300
7
C_IPO
상장일
DATE
8
C_CLOSINGMO
NTH
회계연도
결산
VARCHAR2
50
9
C_CEO
경영자
VARCHAR2
150
10
C_HOMEPAGE
홈페이지
VARCHAR2
50
11
C_LOCATION
소재지
VARCHAR2
50
Company
seq
Field 영문명
Field 한글명 Data Type
Size
NN Key
1
M_ID
회원
아이디
VARCHAR2
50
NFK
2
SLIKE_COD
E
종목코드
VARCHAR2
20
NFK
stock_like
seq
Field 영문명
Field 한글명 Data Type
Size
NN Key
1
M_ID
회원
아이디
VARCHAR2
50
NFK
2
SM_CODE
종목코드
VARCHAR2
20
NFK
3
SM_PRICE
매입가격
NUMBER
30
4
SM_QTY
매입량
NUMBER
30
5
SM_DATE
매입일자
DATE
stock_min
e
주식과 연관된 company, stock_like, stock_mine 테이블 명세서
테이블 명세서 : 주식
C_CODE C_NAME C_CATEGORY C_TYPE C_MARKET C_PRODUCT C_IPO C_CLOSINGMONTH C_CEO C_HOMEPAGE C_LOCATION
000880 한화 화학 기타 화학제품 제조
KOSPI 화학, 화공품 76/06/24 12 금춘수, 옥경
, 김승모,
김맹윤
http://www.hanwhacor
p.co.kr
서울특별시
company
M_ID SLIKE_CODE
eyoung94 057050
stock-like
M_ID SM_CODE SM_PRICE SM_QTY SM_DATE
eyoung94 007680 9480 30 21/08/20
stock-mine
seq Field 영문명 Field 한글명 Data Type
Size
NN Key
1
NO_NUM
알림
번호
NUMBER
YPK
2
NO_CLASSNUM
알림
분류
NUMBER
10
Y
3
NO_ID
알림
표시 회원
VARCHAR2
50
YFK
4
NO_OID
알림
발생 회원
VARCHAR2
50
YFK
5
NO_BNUM
블로그
번호
NUMBER
30
FK
6
NO_CONTENT
알림
내용
VARCHAR2
250
FK
7
NO_TIME
알림
시간
DATE
테이블 명세서 : 기타
notification
seq Field 영문명 Field 한글명 Data Type
Size
NN Key
1
LOG_NUM
로그
번호
number
100
YPK
2
M_ID
아이디
varchar2
50
FK
3
M_IP
접속
아이피
VARCHAR2
50
4
UAGENT
에이전트
VARCHAR2
300
5
REQUEST
요청
메서드
VARCHAR2
50
6
PARAMS
요청
파라미터
VARCHAR2
100
7
LOG_DATE
로그
등록일
DATE
log
seq
Field 영문명
Field 한글명 Data Type
Size
NN Key
1
V_NUM
단어
번호
NUMBER
10
2
V_TOPIC
단어
주제
VARCHAR
2
100
3
V_VOCA
단어
VARCHAR
2
100
4
V_INFO
단어
설명
VARCHAR
2
4000
voca
기타 log, nofitication, voca 테이블 명세서.
테이블 명세서 : 기타
LOG_NUM M_ID M_IP UAGENT REQUEST PARAMS LOG_DATE
1 non-login 0:0:0:0:0:0:0:1 Mozilla/5.0 loginPage (null) 21/08/01
2 eyoung94 0:0:0:0:0:0:0:1 Mozilla/5.0 myBlog eyoung94/ 21/08/01
log
V_NUM V_TOPIC V_VOCA V_INFO
1경제 임계매출분석 시장을 확정하는 방법 하나
인…
voca
NO_NU
M
NO_CLASSNUM NO_ID NO_OID NO_BNUM NO_CONTENT NO_TIME
1 1(1댓글, 2 팔로우) eyoung94 wndms1045 1 유익한 글이네요~21/08/04
notification
1: 댓글 / 2: 팔로우
사용자의 ID (비로그인 시에는 'non-login'), IP, UAGENT, 호출된 메서드명, 해당 메서드의 파라미터
(여러개일땐 '/' 기준으로 들어감) , sysdate 기록
01 스프링 타일즈
TASKS
02 회원가입
03 스프링 breadcrumb 제작
04 블로그 프로필 사진 등록 / 정보
06 디장고 템플릿 처리
05 스프링 에러페이지 처리
07 상장기업 재무제표 수집 시각화
Schedule
위유랑
7 8
~22 23 24 25 26 27 28 29 30 31 123
(
면접
)
4
(
면접
)
5 6 7
(
면접
)
8910 11 12 13 14 15 16 17 18
스프링 깃허브 설정
스프링 타일즈
회원가입
상장기업
재무제표
수집
스프링
breadcrumb
블로그 프로필사진
보유주식 추가
블로그 정보 수정
디장고 깃허브 설정
재무제표 차트 시각화
디장고 타일즈
스프링 에러페이지
장우석
TASKS
01 스프링 TILES
02 자산 블로그
03 주식 블로그
04 관리자 모드
장우석
7 8
~22 23 24 25 26 27 28 29 30 31 123
(
면접
)
4
(
면접
)
5 6 7
(
면접
)
8910 11 12 13 14 15 16 17 18
[기본구현]
회원가입, 타일즈
자산 DB 설계
블로그 설계
블로그 구현(AOP)
게시물 카테고리 분류
블로그 리팩토링
(@PathVariable)
주식퀀트차트
(CCI
매도법)
블로그 파일 업로드
관리자 모드 설계
관리자 모드 구현
디버깅
산출물 관리 정리
Schedule
김미림
04 자산 데이터 연동
05 자산 블로그 차트 / 지표
TASKS
01 기본구현 (로그인, 아이디/비밀번호 찾기)
03 시장별 주식 리스트 / 페이징
02 댓글
김미림 ~
7.22
7.23
7.24
7.25
7.26
7.27
7.28
7.29
7.30
7.31
8.1
8.2
8.3
8.4
8.5
8.6
8.7
8.8
8.9
8.10
8.11
8.12
8.13
8.14
8.15
8.16
기본구현
(로그인,
아이디/
비밀번호찾기)
댓글
구현
UI
연동
주식
시장별
리스트/
페이징
리스
페이
은행 연동
cash
flow
면접
면접
ass
et
면접
자산 차트
면접
차트1
차트2
자산 지표
Schedule
김나영
01 상장기업 리스트 크롤링 / DB입력
02 종목 상세정보 실시간 가격 크롤링
03 회원 보유주식, 관심종목 시각화
TASKS
04 회원별 보유 주식의 수익률 표시 시각화
05 종목별 종가 예측 모듈
Schedule
김나영
주식 / 자산 /
7 8
~22 23 24 25 26 27 28 29 30 31 12 3 4 5 6 7 8910 11 12 13 14 15 16 17 18
[기본구현]
로그인, PW 찾기
상장기업 리스트
크롤링 / DB입력
종목 상세정보
실시간 가격 크롤링
관심종목 추가
(좋아요 기능)
회원 보유주식,
관심종목 시각화
시장별 / 섹터별
종목 리스트, 페이징
랜덤 주식 표시
신규회원
랜덤 주식
증정
회원별 보유 주식의
수익률 표시 시각화
경제 용어사전
크롤링
/ DB 입력 /
검색
종목별 종가 예측
MBTI 검사 페이지,
검사결과 자산에
반영
FLOG 추천 게시글
허태준
01 상장기업 리스트 크롤링 / DB입력
02 종목 상세정보 실시간 가격 크롤링
03 종목 뉴스 크롤링
TASKS
04 종목 캔들 차트
05 등락률 트리맵
06 유사 종목 클러스터링
Schedule
허태준
7 8
~22 23 24 25 26 27 28 29 30 31 123
(
면접
)
4
(
면접
)
5 6 7
(
면접
)
8910 11 12 13 14 15 16 17 18
[기본구현]
회원가입, 로그인
상장기업 리스트
크롤링 / DB입력
AOP 위한 어드바이스
프로필 사진
등록-변경
종목 상세정보
실시간 가격 크롤링
종목 뉴스 크롤링
종목 캔들 차트
검색 -서제스트
로그
기반
워드클라우드
트리맵
유사 종목
클러스터링
디버깅
팀원
01 마이페이지
02 CRUD기반 게시판기능
TASKS
03 계좌연동
04 크롤링
하태근
스프링
디장고
7 8
~22 23 24 25 26 27 28 29 30 31 12 3 4 5 6 7 8910 11 12 13 14 15 16 17 18
마이페이지-사용자
CRUD기반
게시판기
계좌연동폼,
계좌연동
카테고리별
지출분포 차트
전문가 블로그
데이터 크롤링
게시판 페이징 처리
디버깅
Schedule
정주은
TASKS
01 회원 정보 수정 탈퇴
02 회원 블로그
03 회원 활동 알림
04 팔로우 게시판 추천
05 경제지표(금리.지수) 시각화
06 추천 주식 포트폴리오
Schedule
정주은
FLOG / 주식 /
기타
7 8
~22 23 24 25 26 27 28 29 30 31 12 3 4 5 6 7 8910 11 12 13 14 15 16 17 18
마이페이지,
회원탈퇴
추천 주식
포트폴리오
팔로우 관련 기능
경제지표(금리.지수)
알림(댓글 팔로우
)
경제용어 사전
다른 회원 블로그
블로그 기능 디버깅
게시글 좋아요
방문자 카운팅
FLOG 추천 게시글
유저 검색
PHASE 1
JAVA / SPRING
자바 / 스프링
스프링 타일즈
CODEWEB-VIEW
tiles definition에서 defaultTemplate(기본)subTemplate(블로그)
정하여 하나의 웹앱 서비스에서 개의 타일즈 구현
@RequestMapping("{root}/{subroot}/{path}")
public String customPage(Model m,
@PathVariable String root, @PathVariable String
subroot,@PathVariable String path) {
return root + "/" + subroot + "/" + path;
}
스프링 타일즈
CODE
DESCRIPTION
섹션별 AOP 적용 가능, PathVariable 사용
구분된 tiles 기반으로 블로그 header, sidebar 각각 공통적인
처리가 가능해짐. PathVariable 통해 기본적인 블로그 URL 구성
로그 기록 어드바이스
CODE
DESCRIPTION 다음 페이지의 워드클라우드에서 해당 로그 기록 사용
( 기본적으로 AfterReturning에서 저장되지만 LogOut일때는
After에서 ID 받아올 없으므로 Before에서 저장 )
허태준
Breadcrumb
CODE
DESCRIPTION
JoinPointgetSignature().getName()
통해 메서드의 이름 받아 메서드별로
properties 통해 해당하는 Breadcrumb
정보를 전송
페이지별 Breadcrumb 정보는 Tiles
Breadcrumb.jsp에서 사용
PROPERTIES
AOP / PROPERTIES
WEB-VIEW
장우석위유랑
AOPPROPERTIES를통사이트 Breadcrumb 생성
아이디와 비번이 일치할 경우 아이디,이름,닉네임을 세션으로 등록
로그인 실패 처리 : 탈퇴한 회원일 경우 or 아이디,패스워드가 틀렸을 경우
로그인
WEB-VIEW CODE
DESCRIPTION 기본 회원 CRUD, 로그인, 아이디찾기, 비밀번호찾기, 마이페이지, 회원정
수정
아이디 찾기
CODEWEB-VIEW
DESCRIPTION
Ajax 처리
이름, 연락처 입력시 존재할 경우 아이디 표시
Controller
JSP
위유랑장우석
비밀번호 찾기
CODEWEB-VIEW
DESCRIPTION
Controller
입력 값이 맞다면 비밀변호 변경하도록 처리
입력 결과가 null 경우 비밀번호 실패 메시지 띄우기
김미림
마이페이지 사용자 확인
WEB-VIEW
CODE
DESCRIPTION
사용자 본인확인 마이페이지 진입
위유랑하태근
회원정보
WEB-VIEW CODE
DESCRIPTION
회원의 ID 값으로 회원테이블의 데이터 출력
정주은
주식 종목 상세 정보
WEB-VIEW
CODE
DESCRIPTION
로컬 장고에서 DB 넣은 종목 상세 정보를
종목 상세 페이지에 띄운다
김나영
주식 종목 시장별 리스트 / 페이징
WEB-VIEW
CODE
DESCRIPTION
-시장별(KOSPI,KOSDAK,KONEX) 리스트보기
- 시장별 종목 리스트에 대한 페이징 처리
김미림김나영
주식 종목 좋아요 기능 (관심종목)
WEB-VIEW CODE
DESCRIPTION
1. 좋아요의 상태 (0, 1) DB에서 받아온다
2. 하트 아이콘을 누르면 좋아요 추가 / 삭제
3. 반응속도 향상을 위해 좋아요 상태는 상수로 설정
김나영
-- 회원별 보유주식(: 보유주 * 매입가격)
create or replace view personal_stock_sum as (select m_id, sm_code, sm_qty, sm_price * sm_qty as stock_sum from
stock_mine group by sm_code, sm_price * sm_qty, m_id, sm_qty);
-- 회원별 종목별 보유주식(: 보유주 * 매입가격)
create or replace view personal_stock_sum_by_code as (select m_id, sm_code, sum(sm_qty) as sm_qty,
sum(stock_sum) as stock_sum from personal_stock_sum group by sm_code, m_id);
-- 회원별 전체 보유주식(: 보유주 * 매입가격)
create or replace view personal_stock_sum_by_m_id as (select m_id, sum(stock_sum) as stock_sum from
personal_stock_sum_by_code group by m_id);
@RestController
public class StockRestController {
@Autowired
private StockDao stockDao;
// YR
@GetMapping("/addMyStock")
public String addMyStock(StockMineVO smvo, String price) {
System.
out.println(">>> addMyStock 진입 >>>");
int sm_price = Integer.
parseInt(price.replaceAll(",", ""));
smvo.setSm_price(sm_price);
int res = stockDao.addMyStock(smvo);
return res+"";
}}
SQL
Controller
회원별 보유 주식
DESCRIPTION
1. 보유주식의 코드와 매입가격으로 보유주식을
연산함
2. 쿼리가 성공적으로 수행되었을 경우 결과값을
1 반환받아 Ajax처리
회원별 보유 주식
function addMyStock() {
var sm_qty = $('#mystock').val();
var price = "${price }";
console.log("sm_qty :::: " + sm_qty);
console.log("price :::: " + price);
urlv =
"addMyStock?m_id=${sessionScope.sessionID}&sm_code=${cvo.c_code }&price=${price }&sm_qty="+sm_qty;
console.log("urlv :::: " + urlv);
$.ajaxSetup({
cache : false
});
$.ajax({
type : "GET",
url : urlv,
success : function(res) {
console.log("Data status : " + res);
if (res === "1") {
$('#mystock').val("");
window.alert("성공적으로 등록되었습니다.");
} else {
window.alert("등록이 실패되었습니다.");
}
},
error : function(e) {
console.log("error : " + e);
}
});
}
<table>
<tr>
<td><input type=
"number" class="form-control"
style="width:
80px;" id="mystock"
name="mystock" min="0"
placeholder=
""></td>
<td><button class=
"btnClass"
onclick="addMyStock()"
style="width:
80px;">보유</button></td>
</tr>
</table>
VIEW
신규 회원에게 랜덤 주식 1 부여
WEB-VIEW
CODE
DESCRIPTION
1. -회원의 보유주식이 0개이면 주식 정보 DB에서 랜덤한 값을 받아
2. 1주의 주식을 DB 넣어준다
김나영
주식 종목 섹터별 리스트
WEB-VIEW CODE
DESCRIPTION
1. 주식 종목의 섹터 리스트 섹터 종목 리스트
김나영
종목 검색 서제스트
DESCRIPTION DB 기업 리스트에서 사용자가 입력한 문자열로
시작하는 기업들의 기업명,코드를 Map 담은 List
전달
허태준
WEB-VIEW
워드클라우드
CODE
DESCRIPTION
로그 테이블에서 REQUEST= CompanyDetail 행의 PARAMS(종목코드) 받아와 조회수를 바탕으로 만든 워드클라우드
Java SE 8 부터 도입 stream API 사용
) List<String> nameList = codeList.stream().map(i -> c_code_to_c_name(i)).collect(Collectors.toList());
- codeList 원소들에 접근하여 원소마다 c_code_to_c_name 메서드를 걸어주고 그것들을 리스트로 만들어 반환 (기업코드 리스트로부터 기업이름 리스트
얻어내기)
HashMap 기업코드와 기업명을 담아 JSP 보내고 JSP에서 기업별 횟수를 count하여 워드클라우드 만듦(JQCloud)
허태준
블로그 구조 설계
CODE
DESCRIPTION
@PathVariable : 블로그에서 기능별로 직관적으로(/blog/호스트아이디
/기능)
접근이 가능 하도록 설계
FLOW 사용한 DB 대부분의 TABLEMEMBER 테이블과 참조관계이
때문에 블로그 호스트의 ID 가지고 있으면 해당 회원 관련 정보들
접근이 가능.
WEB-VIEW
@PathVariable
장우석
블로그 사이드바
WEB-VIEW CODE
DESCRIPTION
AOP :
@PathVariable 통해 블로그의 모든 reques에는 호스트의 ID 존재하기
때문에
사이드 바에 들어갈 블로그 호스트의 정보와 해당 블로그의 카테고리
보가 제공될 있도록 AOP(Before Advice) 적용
AOP
장우석
다른 회원 블로그 이동
WEB-VIEW CODE
DESCRIPTION
-메인 블로그, 주식블로그 자산 블로그로 이동시 HOST정보를 출력
-블로그 호스트 ID활용 팔로워,팔로잉 출력
-블로그 화면을 출력해줄때 sidebar 메인블로그 주식블로그 자산블로그에도 모두 동일하게 작동해야 하므로 AOP 사용하여 팔로우수 블로그 방문자 팔로우 상태 등을
블로그 이동
WEB-VIEW CODE
DESCRIPTION
개인 블로그로 이동시 개인 정보, 팔로워, 다른 회원의 게시글, 인기 게시글
블로그 방문자 출력
URL 상의 m_id session 상의 id 같다면, 블로그로 이동 :::: 같지 않다면 m_id 블로그로 이동한다.
최근 팔로워 리스트
WEB-VIEW CODE
DESCRIPTION
한글 파일명 인코딩 팔로우 하고 있는 회원 확인 나를 팔로잉 하는 회원의 리스트를 출력해준다.
프로필 사진 이미지가 한글일 경우 사진 출력이 되질않아 인코딩을 해줍니다.
팔로우 회원의 최근 게시글
WEB-VIEW
CODE
DESCRIPTION
내가 팔로우하는 회원들의 최근 게시글을 출력
게시글 좋아요 상태를 DB에거 사겨와서 하트에 출력
게시글 출력 mapper에서 다중행 서브쿼리와 테이블 조인을 통해 데이터를 가져오고 sysdate -3 줘서 3 이내의 글만 출력하도록 처리 했습니다.
좋아요 많은 게시글 추천
WEB-VIEW CODE
DESCRIPTION
-30일간 등록된 모든 게시글 좋아요 많은 순으로 출력
-게시글 좋아요 상태 출력
-추천 게시글은 sysdate 30 기준으로 상위 10개의 게시글만 출력합니다.
좋아요 많은 게시글 추천
WEB-VIEW CODE
DESCRIPTION
- Ajax 활용하여 게시글 추천 기능
- Ajax 활용 메서드 실행시 좋아요 상태를 체크 like unlike 값을 반환
하여 jsp상에 출력해줍니다.
FLOG 추천 게시글
WEB-VIEW CODE
DESCRIPTION
FLOW 블로그에서 추천수가 높은 게시글을 10출력
로그인 상태라면 작성자의 FLOG 이동
김나영
팔로우 기능
WEB-VIEW CODE
DESCRIPTION
현재 팔로우 상황을 체크 팔로우 언팔로우 진행
알림 알림 확인
WEB-VIEW CODE
DESCRIPTION
-댓글 테이블과 알림 테이블에 데이터 등록되도록
Transactional 처리
-팔로워가 생겼을 경우 DataBase 트리거로 알림테이블에 등록
알림 알림 확인
CODE
DESCRIPTION
알림을 보고 댓글 알림을 클릭하면 게시글로 이동하고 팔로우를 클릭하게 되면 사람의 블로그로 이동
왼쪽 메서드는 알림을 출력해주는 메서드, 오른쪽의 메서드는 알림을 클릭했을 no_ClassNum으로 댓글 알림인지 팔로우 알림인지
구분
댓글 알림일 경우 댓글이 달린 게시글로 이동시키고 팔로우 알림일 경우 팔로우 회원의 블로그로 이동하도록 처리
게시판 작성
WEB-VIEW CODE
DESCRIPTION
게시판 글작성
장우석하태근
기본 게시판 CRUD, 작성, 상세보기,
게시판 상세보기
WEB-VIEW CODE
DESCRIPTION
게시판 상세보기와 댓글기능
하태근장우석김미림
게시판 수정
WEB-VIEW
CODE
DESCRIPTION
게시글 수정
하태근장우석
게시판 페이징
WEB-VIEW CODE
DESCRIPTION
게시글 페이징 처리
위유랑하태근
댓글
CODEWEB-VIEW
DESCRIPTION
Controller
ajax
댓글 쓰기, 수정, 삭제
쓰기, 수정은 파라미터 값이 크기 때문에 POST 방식으로 처리
JSP
김미림
경제 용어사전 서제스트, 검색
WEB-VIEW CODE
DESCRIPTION
모든 리스트를 받아와 파라미터가 앞글자인 단어를
서제스트로 검색창 밑에 띄워줌
선택하면 검색 결과 페이지로 이동
김나영
WEB-VIEW
DESCRIPTION
CODE
자바스크립트, J Query 회원, 비회원을 대상으로 MBTI 검사를 구현하여
회원일 경우 Member 테이블 DB 인서트
MBTI 검사 (자산 관리 성향 테스트)김나영
FLOW 사이트에서 이메일 보내기
WEB-VIEW
CODE
DESCRIPTION
-구글 스프레드에서 HTML FORM Responses 작성
-스크립트 편집기에서 수신받을 이메일을 설정하고
- jsp form action 해당 스크립트와 동일하게 설정
- send message 버튼을 통해 submit 하게되면 스프레드 시트
설정해놓은 이메일로 input창에 입력한 내용들이
key:value 형식으로 송신됨
김나영
PHASE 2
DJANGO / PYTHON
장고 / 파이썬
메서드 모듈화 / 공통기능 분리
DESCRIPTION
코드 유지보수 재사용성을 위해 함수, 클래스 모듈화하고 공통 기능(DB
) 분리
CODE
DB 경제 용어사전 데이터 넣기
CODE DESCRIPTION
적재
아래의 주소에 해당하는 경제 용어 사전 엑셀파일을
어와 DB 적재
데이터 출처 :
https://www.data.go.kr/data/15006052/fileData.do
김나영
DB 상장기업 데이터 넣기
CODE
DESCRIPTION 1. 클래스 초기화 구문을 통해 멤버변수를 등록하고, 상장 기업의 기본 정보를 크롤링으로 받아와서 DF 시킨다
적재
김나영
DB 상장기업 데이터 넣기
CODE
DESCRIPTION 2. 카테고리 정보 상장된 시장 정보 받아와 컬럼으
추가
적재
김나영
DB 상장기업 데이터 넣기
CODE DESCRIPTION
3. COMPANY 테이블에서 C_CODE 기준으로
해당 정보가 존재할 경우 INSERT 구문을,
해당 정보가 존재하지 않을 경우 UPDATE 구문을 실행하는
MERGE문을 실행
적재
김나영
은행 연동하기
CODEWEB-VIEW
DESCRIPTION
웹에서 해당은행 연동하기 누르면 Ajax 장고와 연동
※ 보안의 문제로 은행 API 접근불가로 미리 내역서를 받아서
가상의 페르소나의 내역서를 만들어 테스트 진행
JSP
적재
하태근김미림
은행 연동하기
데이터 정제
반환
CODE
DESCRIPTION
1. 장고 static 폴더에서 해당 은행과 아이디가 존재하는 것이 있다면 데이터 정제
시작
2. 데이터를 정제한 cashflow(현금흐름표) 테이블에 인서트, asset(자산) 테이블
업데이트 된다.
views
module static
적재
하태근김미림
자산 블로그 차트
CODEWEB-VIEW
DESCRIPTION Ajax 장고와 연동
월별유입지출 차트 : cashflow(현금흐름표) 테이블에서
c_flow컬럼 값이 유입인지 유출인지에 구분하여
한달 동안의 유입지출 차트 생성
카테고리별지출 차트 : cashflow(현금흐름표) 테이블에서
c_category 컬럼 값을 기준으로
한달 동안의 카테고리별 지출 파이차트 생성
JSP
시각화
김미림
자산 블로그 차트
CODE
views
module
DESCRIPTION
장고에서 DB 연동
Plotly 차트 시각화
시각화
김미림
MBTI 검사 (자산 관리 성향 테스트)
WEB-VIEW CODE
DESCRIPTION
MBTI 검사 결과를 GET방식으로 index 페이지로 넘긴다
index에서 받은 파라미터를 DB 저장 URL에서는 삭제한다
DB 들어간 MBTI 결과를 토대로 목표 자산관리 수치를 제시한다
(MBTI 검사 , 검사 목표 수치가 달라짐)
시각화
김미림 김나영
자산 블로그 카테고리별 지출 분포
CODE
시각화
Spring - jsp
Ajax 장고와 연동
WEB-VIEW
DESCRIPTION
하태근
WEB-VIEW
DESCRIPTION
CODE
get_pagecnt_n_date(day): BeatiffulSoup 이용해 원하는 날짜를 반환해주는 함수. 가령 30 입력하면 오늘 날짜, 오늘 이전의 30 날짜, 해당 기간에
시글 페이지 개수를 반환. 이후 필요한 곳의 URLformatting하는 방식으로 사용하여 코드 재사용성을 높임
전문가 블로그 데이터 크롤링 하태근
CODE
DESCRIPTION
크롤링 하고 싶은 페이지의 글에서의 전문가 블로그 컨텐츠로 활용할 제목, 내용 필요한 데이터
모아줌
전문가 블로그 데이터 크롤링 하태근
CODE
DESCRIPTION
모인 데이터들을 Pandas 사용하여 DataFrame 이후 오라클DB 연동하여 Insert실행
전문가 블로그 데이터 크롤링 하태근
WEB-VIEW
주식 코드를 입력받아 DART API에서 가져온 인덱스를 기준으로 기업코드를 도출. 네이버 금융 기준 KOSPI, KOSDAQ 거래량 상위 100 기업을
스크래핑해서 재무제표가 존재할 경우 당기 순이익와 총매출 재무제표를 비율을 차트화
DESCRIPTION
당기순이익 / 매출 버블차트
CODE
시각화
위유랑
당기순이익 / 매출 버블차트
CODE
function make_sales_profit_chart(opt) {
$.ajax({
url :
'http://192.168.0.14:9000/stock/make_sales_profit
_chart?opt='
+ opt,
type : 'GET',
dataType : 'jsonp',
success : function(data) {
Plotly.newPlot('sales_profit_chart', data, {});
}
});
}
위유랑 시각화
주식 코드를 입력받아 DART API에서 가져온 인덱스를 기준으로 기업코드를 도출. 네이버 금융 기준 KOSPI, KOSDAQ 거래량 상위 100 기업을
스크래핑해서 재무제표가 존재할 경우 당기 순이익와 총매출 재무제표를 비율을 차트화
DESCRIPTION
WEB-VIEW
DESCRIPTION
당기순이익 / 매출 버블차트
CODE
주식 코드를 입력받아 DART API에서 가져온 인덱스를 기준으로 기업코드를 도출. 네이버 금융 기준 KOSPI, KOSDAQ 거래량 상위 100 기업을
스크래핑해서 재무제표가 존재할 경우 당기 순이익와 총매출 재무제표를 비율을 차트화
시각화
위유랑
$(function() {
$
.ajax({
url : 'http://192.168.0.14:9000/stock/get_company_figure?stock_code=${cvo.c_code }',
type : 'GET',
dataType : 'jsonp',
success : function(data) {
if (data != null) {
console.log(data['figures']);
Plotly.newPlot('fs_rate1', data['chart1'], {});
Plotly.newPlot('fs_rate2', data['chart2'], {});
Plotly.newPlot('fs_rate3', data['chart3'], {});
$('#sales')
.attr(
'data-purecounter-end',
parseInt(data['figures']['매출액']) / 100000000);
$('#profit')
.attr(
'data-purecounter-end',
parseInt(data['figures']['당기순이익']) / 100000000);
$('#capital')
.attr(
'data-purecounter-end',
parseInt(data['figures']['자본총계']) / 100000000);
$('#debt')
.attr(
'data-purecounter-end',
parseInt(data['figures']['부채총계']) / 100000000);
}
},
error : function(e) {
console.log("error : " + e);
}
});
});
CODE
당기순이익 / 매출 버블차트 위유랑 시각화
CODEWEB-VIEW
API에서 관심종목 번째 데이터에 해당하는 퀀트차트
DESCRIPTION
주식퀀트차트(CCI매도법)시각화
$(document).ready(function() {
$.ajax({
url : 'http://192.168.0.5:9000/stock/getQuantChart?m_id=${h_id}',
type : 'GET',
dataType : 'jsonp',
success : function(data) {
console.log(data);
Plotly.plot('quant', data, {});
}
});
});
$.ajaxSetup({
cache : false
});
장우석
CODE
보유주식, 관심 종목의 시각화 1- Plotly, JQcloud
views
1. Django 에서 cx_Oracle 데이터 읽어와 json Data 만들
2. callback 경우, 아닌 경우의 response 정의
3. jsp 에서 ajax 받아온다
DESCRIPTION
$(function() {
$.ajax({
url : 'http://192.168.0.30:9000/stock/load_stock_data?m_id='+ m_id,
type : 'GET',
dataType : 'jsonp',
success : function(data) {
console.log(data);
Plotly.plot('chart_mylike', data, {});
}});});
WEB-VIEW
시각화
김나영
$.ajax({
type : "POST",
url : "mystock_chart2?m_id=" + m_id,
success : function(jsondata) {
//------------Chart ui
var chart = c3.generate({
bindto : '#chart_mystock',
data : {
json : [ JSON.parse(jsondata) ],
keys : {
value : Object.keys(JSON.parse(jsondata)),
},
type : 'donut'
},
donut : {
title : "보유 주식",
},
});
//------------------Chart ui
},
error : function(request, status, error) {
alert("code:" + request.status + "\n" + "message:"
+ request.responseText + "\n" + "error:" + error);
}
});
CODE
보유주식, 관심 종목의 시각화 2- C3
1. DB 있는 보유주식의 데이터를 ajax 비동기 통신
통해
2. 받아서 도넛 차트로 띄워준다
DESCRIPTION
WEB-VIEW
$.ajaxSetup({
cache : false
});
var m_id = '${sessionScope.sessionID}';
시각화
김나영
WEB-VIEW
보유주식의 손익평가 표시
1. 블로그 이용자가 보유한 주식에 대한 현재 평가액을 가져와 손익금액 백분율을 시각
준다
DESCRIPTION
CODE
// 블로그 손익평가 띄우기 -NY
public List<CompanyVO>priceUpdate(List<StockMineVO>haveList) {
List<CompanyVO>priceUpdate =this.priceUpdate(haveList.get(0).getM_id());
int len =haveList.size();
for (int i=0;i<len;i++) {
priceUpdate.get(i).setStock_sum(haveList.get(i).getStock_sum());
priceUpdate.get(i).setSm_qty(haveList.get(i).getSm_qty());
int qty =haveList.get(i).getSm_qty();
int price =Integer.
parseInt(priceUpdate.get(i).getPrice().replace(",",""));
int mysum =haveList.get(i).getStock_sum();
priceUpdate.get(i).setEvaluation((qty *price)-mysum);
float eval_per =((float)mysum /((float)qty *(float)price));
System.
out.println(Math.round(eval_per *100)/100.0);
priceUpdate.get(i).setEval_percent((float) (Math.
round(eval_per *100)/100.0));
}
return priceUpdate;
}
https://finance.naver.com/item/main.nhn?
code=
김나영
WEB-VIEW
실시간 종목 가격 받아오기 (JSOUP)
1. JSOUP 사용해 네이버 파이낸스 (http://finance.naver.com)에서
2. 실시간으로 해당 종목의 정보를 크롤링한다
DESCRIPTION
CODE
// 종목별 실시간 가격 받아오기 -NY
public List<CompanyVO>get_stockPrice(List<CompanyVO>slist) {
String today_sel ="#chart_area > div.rate_info > div > p.no_today > em > .blind";
String exday_sel ="#chart_area > div.rate_info > table > tbody > tr:nth-child(1) > td.first > em > span.blind";
String comp_sel ="#chart_area > div.rate_info > div > p.no_exday > em > span:nth-child(1)";// 하락이냐 상승이냐
String comp_pri_sel ="#chart_area > div.rate_info > div > p.no_exday > em:nth-child(2) > span.blind";
String comp_per_sel ="#chart_area > div.rate_info > div > p.no_exday > em:nth-child(4) > span.blind";
String open_sel ="#chart_area > div.rate_info > table > tbody > tr:nth-child(2) > td.first > em > span.blind";
String high_sel ="#chart_area > div.rate_info > table > tbody > tr:nth-child(1) > td:nth-child(2) > em > span.blind ";
String low_sel ="#chart_area > div.rate_info > table > tbody > tr:nth-child(2) > td:nth-child(2) > em > span.blind ";
String volume_sel ="#chart_area > div.rate_info > table > tbody > tr:nth-child(1) > td:nth-child(3) > em > span.blind";
Document doc =null;
for (CompanyVO c :slist) {
String url ="https://finance.naver.com/item/main.nhn?code=" +c.getC_code();
try {
doc =Jsoup.
connect(url).get();// 1. get방식의 URL 연결해서 가져온 값을 doc 담는다.
}catch (IOException e) {
System.
out.println(e.getMessage());
}
김나영
WEB-VIEW
실시간 종목 가격 받아오기 (JSOUP)
1. JSOUP 사용해 네이버 파이낸스 (http://finance.naver.com)에서
2. 실시간으로 해당 종목의 정보를 크롤링한다
DESCRIPTION
CODE
// 2. doc에서 selector 내용을 가져와 Elementes 클래스에 담는다.
Elements today_ele =doc.select(today_sel);
Elements exday_ele =doc.select(exday_sel);
Elements comp_ele =doc.select(comp_sel);
Elements comp_pri_ele =doc.select(comp_pri_sel);
Elements comp_per_ele =doc.select(comp_per_sel);
Elements open_ele =doc.select(open_sel);
Elements high_ele =doc.select(high_sel);
Elements low_ele =doc.select(low_sel);
Elements volume_ele =doc.select(volume_sel);
String today =today_ele.text();// 오늘가격
String exday =exday_ele.text();// 전일가격
String compare =comp_ele.text();// 전일비 (상승/하락)
String comp_pri =comp_pri_ele.text();// 전일비 (가격)
String comp_per =comp_per_ele.text();// 전일비 (비율)
String open =open_ele.text();// 시가
String high =high_ele.text();// 고가
String low =low_ele.text();// 저가
String volume =volume_ele.text();// 거래량
c.setPrice(today);
c.setExday(exday);
c.setCompare(compare);
c.setCom_price(comp_pri);
c.setCom_percent(comp_per);
c.setOpen(open);
c.setLow(low);
c.setVolume(volume);
c.setHigh(high);
}
return slist;
}
김나영
WEB-VIEW
실시간 종목 가격 받아오기 (JSOUP)
1. 사용자별 관심종목 리스트를 DB에서 받아온다
2. JSOUP 사용한 종목의 실시간 데이터를 코드 재사용을 통해 리스트로
가져온다
DESCRIPTION
Controller
CODE
// 관심종목 -NY
@GetMapping(value ="/my_like_Stock")
public ModelAndView my_like_stock(String m_id,Model m) {
ModelAndView mav =new ModelAndView();
Date now =new Date();
// 종목코드 + 종목이름
List<CompanyVO>slist =stockService.listLike(m_id);
mav.addObject("slist",slist);
mav.addObject("now",now);
mav.setViewName("default/stock/my_like_Stock");
return mav;
}
김나영
CODEWEB-VIEW
DESCRIPTION
관리자 모드(Django) - 접속
views
시각화
MEMBER 테이블에서 M_DIVISION0 회원(관리자)
관리자 로그인이 가능
WEB-VIEW CODE
세션에 관리자 ID 없는 경우 접근 차단(로그인 페이지로 이동)
FLOW 회원 , FLOG 게시물 FLOW 전반적인 통계 개요
PLOTLY 차트를 통해 일별 사용량, 서비스 이용 현황 등을 시각화
DESCRIPTION
관리자 모드(Django) - 메인
views
시각화
WEB-VIEW CODE
FLOW 관리자 페이지(회원 분포) :
FLOW 회원의 연령대별, 성별 분포 시각화
- PLOTLY 차트
DESCRIPTION
관리자 모드(Django) 회원 분포 통계
views
시각화
templates
CODE
FLOW 회원 연령별 분포:
MEMBER 테이블의 주민번호(M_JUMIN)사용해 연제 년도와 연산해 회원 나이의 분포를 0~ 90대로 나누어 차트로 출력
DESCRIPTION
관리자 모드(Django) 회원 연령대 분포 통계
views
시각화
models
CODE
FLOW 회원 성별 분포:
MEMBER 테이블의 주민번호(M_JUMIN) 사용해 뒷자리가 1/3(남자), 2/4(여자) 분리하여 분포를 파이차트로 시각화
DESCRIPTION
관리자 모드(Django) 회원 성별 분포 통계
views
시각화
models
CODE
회원 관리(검색 삭제):
회원 ID 통해 검색할 있고 해당 회원을 삭제할 있음 (삭제의 경우 M_DIVISION9 변경)
DESCRIPTION
관리자 모드(Django) 회원 목록(검색 삭제)
WEB-VIEW
시각화
views
기업 정보 페이지
WEB-VIEW
1
2
3
4
기업 정보 페이지 -캔들차트
WEB-VIEW
CODE
DESCRIPTION FinanceDataReader : 국내외 금융 데이터 수집 라이브러리
Cufflinks : Pandas.DataFrame 형태의 데이터를
plotly 이용해 쉽게 시각화 있도록 도와주는
라이브러리
시각화
기업 정보 페이지 -캔들차트
WEB-VIEW
CODE
DESCRIPTION FinanceDataReader : 국내외 금융 데이터 수집 라이브러리
Cufflinks : Pandas.DataFrame 형태의 데이터를
plotly 이용해 쉽게 시각화 있도록 도와주는
라이브러리
시각화
기업 정보 페이지 기업 뉴스
WEB-VIEW
CODE
DESCRIPTION
JSOUP 사용해
네이버 파이낸스 (http://finance.naver.com) 에서
실시간으로 해당 종목의 정보를 크롤링
https://finance.naver.com/item/news_news.nhn?code=298020
트리맵
CODE
WEB-VIEW
거래량 상위 종목명
시각화
https://finance.naver.com/sise/sise_quant.nhn?sosok=1
주소로 접속하여 BeautifulSoup 통해 코스피, 코스닥 거래량 상위 종목명을 스크래핑하여 거래량 상위 종목명 리스트 반환
DESCRIPTION
트리맵
CODE
to_csv
시각화
https://finance.naver.com/sise/sise_quant.nhn?code=298020&page=1
거래량 상위 종목명에 해당하는 company 테이블의 DB 정보가 있을 경우, 주소에 들어가 일자, 종가, 전일비, 시가 트리차트를
띄우기 위한 기본
정보를 스크래핑하여 DF 저장후 csv 만듦. 파일명을 csv 파일을 생성한 일자로 저장하여 동시간대 DF 있을 경우 스크래
핑을 다시 수행하지 않고 csv 파일을 읽어옴
DESCRIPTION
트리맵
CODE
시각화
plotlytreemap 통해 불러온 DF 해당하는 데이터를 매칭시켜 시각화해줌
DESCRIPTION
트리맵
CODE
DESCRIPTION Plotly 사용하여
주식 등락률을 한눈에 파악하게 해주는 트리맵 구현
시각화
WEB-VIEW
DESCRIPTION
CODE
한국은행의 API KEY 사용해서 금리 데이터를 가져와서 시각화
기준금리 출력 시각화
WEB-VIEW
DESCRIPTION
CODE
야후 파이낸스 모듈을 활용하여 한국과 미국의 주가지수 시각화
기준금리 출력 시각화
PHASE 2
BIG DATA
데이터 분석 알고리즘
종목별 종가 예측 모듈
DESCRIPTION
Radial Basis Fuction 커널
(방사형 구조를 기본으로
)
커널 기법은 주어진 데이터를 고차원 특징 공간으로 사상해주는 것이다.
선형 SVM으로는 데이터를 제대로 분류할 없는 경우, 고차원 공간에 사상되고 나면
원래의 차원에서는 보이지 않던 선형으로 분류해줄 있는 방법이 보인다.
RBF 커널 SVM으로
데이터를 분류해낸 모습.
종목별 종가 예측 모듈
DESCRIPTION
Radial Basis Fuction 커널
(방사형 구조를 기본으로
)
서포트 벡터는 결정 경계를 만드는데 많은 영향을 준다. 데이터들의 위치에 따라 결정 경계
위치도 달라질 것이다. , 데이터들이 결정 경계를 지지(support)하고 있다고 말할
때문에, 서포트벡터라고 불리는 것이다.
SVM 에서 Support Vector ? :
서포트 벡터들은 클래스 사이의 경계에 위치한 데이터 포인트들
대부분의 데이터는 이상치(outlier)들이 관측된다. 이런 경우 데이터들을
선형적으로 완벽하게 분리해내는 것은 불가능하다. 이를 해결하기 위해서
약간의 오류를 허용하는 전략이 만들어졌다. 이것과 관련된 파라미터가
바로 cost(C)이다.
종목별 종가 예측 모듈
DESCRIPTION
- SVM 기본 매개변수이며 얼마나 많은 데이터 샘플이 다른 클래스에 놓이는 것을 허용하는
지를 결정한다. 작을 수록 많이 허용하고, 수록 적게 허용한다.
-, C값을 낮게 설정하면 이상치들이 있을 가능성을 크게 잡아 일반적인 결정 경계를 찾아내
, 높게 설정하면 반대로 이상치의 존재 가능성을 작게 봐서 세심하게 결정 경계를 찾아
낸다.
C , Gamma
- RBF 커널 기법에서 사용자가 설정 주어야 하는 매개변수
gamma 하나의 데이터 샘플이 영향력을 행사하는 거리를 결정한다.
표준편차와 관련되어 있는데, 클수록 작은 표준편차를 갖는다. ,
gamma 클수록 데이터 포인터들이 영향력을 행사하는 거리가 짧아
지는 반면, gamma 낮을수록 커진다.
Radial Basis Fuction 커널
(방사형 구조를 기본으로
)
종목별 종가 예측 모듈
DESCRIPTION
- C 데이터 샘플들이 다른 클래스에 놓이는 것을 허용하는 정도를
정하고, gamma 결정 경계의 곡률을 결정한다.
- 5년치 데이터를 학습시켜 예측해 당일의 현대 자동차 종가
WEB-VIEW
종목별 종가 예측 모듈
1. 종목 코드를 파라미터로 1달치 종가 데이터를 모아 SVR 분석을 통해 익일 종가를 예측 리턴한다.
2. SVR (Support Vector Regression) 모델 : 회귀 기반 머신 러닝 접근 방식
3. 2차원에서 선형적으로 분류할 없었던 것을 3차원 공간에서 분류할 있도록 하는 커널 기법의 하나.
4. 시계열 x, y 가격. 차원 추가를 위해 인덱스 추가. 등락의 경향성으로 그루핑을 해서 비선형 데이터를 선형 데이터로
꾸고자 SVR 사용
DESCRIPTION
CODE
머신러닝
기업 정보 페이지 유사 종목
CODEWEB-VIEW
DESCRIPTION
FinanceDataReader 통해 KOSPI 200 해당하는 종목 최근 1년간
주가 움직임이 유사한 종목을 클러스터링을 통해 분류
사이킷런의 K-Means Clustering 사용
머신러닝
기업 정보 페이지 유사 종목
CODEWEB-VIEW
DESCRIPTION
- axis=1( 기준)으로 DF 전체 길이(날짜)에서 null5% 이상인 컬럼을 제거함. dropnathresh
성은 dropna 수행하는 null 개수를 지정해주는 속성임
- dropna 수행하고 다음 Nan 데이터의 개수가 5% 이하인 컬럼에서 존재하는 NaN 값은 fillna 통해
뒤의 (bfill)으로 채움
- DataFramepct_change() 메서드로 현재 데이터와 이후 데이터의 차이(주가에서 등락률)퍼센트로
하고 DF 전치시켜 날짜 인덱스에서 종목 인덱스로 변경
머신러닝
기업 정보 페이지 유사 종목
DESCRIPTION CODE
- Elbow method : 클러스터 개수를 늘려가며 오차제곱합(SSE) 그래프로 나타
-감소 비율이 급격하게 작아지는 부분을 최적의 클러스터링 개수로 정하는
최적의 클러스터링
클러스터가 정의되
않은 데이터에서 일반
머신러닝
기업 정보 페이지 유사 종목
CODE
DESCRIPTION
머신러닝
업종 분류에 나온대로 Grouping 하는 것보다 현실적인 그룹화가 가능성이
높음
기업 정보 페이지 유사 종목
CODE
기본적으로 같은 섹터
속한 기업들이
그룹
다른 섹터에 속하더라도
주요 사업영역이 유사한 기업
(한국전력 두산중공업)
같은 그룹으로 분류
같은 재벌그룹에 속한
기업들도 같은 그룹
DESCRIPTION
업종 분류에 나온대로 Grouping 하는 것보다 현실적인 그룹화가 가능성이
높음
머신러닝
주식 포트폴리오 추천
WEB-VIEW
DESCRIPTION
CODE
보유하고 있는 주식의 일간 변동률과 일간 리스크를 각자 다른 주식의 비중으로 20,000개의 포트폴리오를
만듦
위험 대비 수익률이 가장 높은 포트폴리오의 수익률과 포트폴리오 수익률을 비교
머신러닝 / 시각화
주식 포트폴리오 추천
WEB-VIEW
DESCRIPTION
CODE
20,000개의 포트폴리오를 산점도로 출력
샤프 지수가 가장 높은 것과, 포트폴리오, 위험이 가장 작은 포트폴리오를 표시
머신러닝 / 시각화
감사합니다.
세상에 없던 자산관리 플랫폼
TEAM BTEAM B FINAL PROJECT